前面幾天介紹了如何使用 GORM 來實作新增 (Create)、讀取 (Read)、更新 (Update)
今天要來將 CRUD 中的最後一個,也就是 Delete 刪除功能來實作出來~
我們回到 repository/album.go
,這邊我預想刪除的情況有兩種
下面就來分別實作出來吧
透過 GORM 提供的 Delete
來將用 id 找到的 Album struct
物件從 SQL 資料庫中進行刪除
// Delete 刪除資料
func Delete(id string) {
database.DB.Delete(&database.Album{ID: id})
}
由於 GORM 似乎沒有提供批次刪除的 method,所以就只好從根本來實作了
實作思路其實很簡單,就是先將全部資料撈出來,再用 for loop 逐一進行刪除
全部資料撈出來的部分,可以使用 Day 21 實作好的 ReadAll()
來達成
// DeleteAll 刪除全部資料
func DeleteAll() error {
all, err := ReadAll()
if err != nil {
return err
} else {
for _, v := range all {
database.DB.Delete(&v)
}
}
return err
}
回到 main.go
下面就來個別使用看看,前面的 Code 就不贅述了
因為都跟前面的一樣,有需要的可以自行到前一天來做觀看
下面就以主要部分來做說明
// 這邊的 album 變數,是在前面宣告的
repository.Delete(album.ID)
err := repository.DeleteAll()
if err != nil {
panic(err)
}
執行後,就可以將 album
變數輸出出來,確認是否有刪除成功啦~
⬆️ 前面三個輸出結果分別是 ReadAll
與 Read
和 Update
的,最後一個輸出結果是執行 DeleteAll
後再透過 ReadAll
去確認是否有確實進行資料刪除的
以上 Sample Code 可以在我 GitHub 上找到
https://github.com/leoho0722/it15th
今天我們透過 GORM 來實作向 SQL 資料庫進行刪除資料
在這四天分別介紹了如何透過 GORM 來實作資料庫的 CRUD
接下來就要來透過 Gin 來開發 Web Backend API 並跟 SQL 資料庫操作進行整合
那麼就明天見啦~